package com.xbongbong.pro.team;

import com.xbongbong.paas.domain.entity.PaasFormEntity;
import com.xbongbong.paas.enums.IndexTypeEnum;
import com.xbongbong.paas.toolbox.wrap.UserVO;
import com.xbongbong.pro.domain.entity.FormTeamSetEntity;
import com.xbongbong.pro.listbatch.pojo.TeamBatchPojo;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author shen.yang
 * @version v1.0
 * @Description
 * @date 2022/2/17 19:32
 * @since v1.0
 */
@Setter
@Getter
@ToString
public class TeamSaveByDataIdListDTO {

    /**
     * 当前操作人
     */
    private UserVO loginUser;

    /**
     * 关联表单实体类
     */
    private PaasFormEntity paasFormEntity;

    /**
     * 关联字段
    */
    private String attr;

    /**
     * 关联表单索引
    */
    private IndexTypeEnum indexTypeEnum;

    /**
     * 公司id
     */
    private String corpid;
    /**
     * saas标记
     */
    private Integer saasMark;
    /**
     * 业务类型
     */
    private Integer businessType;
    /**
     * 业务子类型
     */
    private Integer subBusinessType;
    /**
     * 经销商标记
     */
    private Integer distributorMark;
    /**
     * 数据id
     */
    private List<Long> dataId;

    /**
     * 要添加的负责人的list
     */
    private List<String> addMainUserList;

    /**
     * 要添加的负责人
     */
    private Map<String, Set<String>> addMainUserMap;
    /**
     * 要删除的负责人
     */
    private Map<String, Set<String>> delMainUserMap;
    /**
     * 要添加的协同人
     */
    private Map<String, Set<String>> addCoUserMap;
    /**
     *要删除的协同人
     */
    private Map<String, Set<String>> delCoUserMap;
    /**
     * 要更新成负责人的人员
     */
    private Map<String, Set<String>> updateToMainUserMap;
    /**
     * 要更新成协同人的人员
     */
    private Map<String, Set<String>> updateToCoUserMap;
    /**
     * 主要用于隔离模式下团队协同人对应的负责人变更
     */
    private Map<String, Map<String, Set<String>>> changeTeamMainUserMap;
    /**
     * 是否来自继承，false不是
     */
    private Boolean isInheritance = false;

    /**
     * 表单团队成员设置
     */
    private FormTeamSetEntity formTeamSetEntity;

    /**
     * 团队名称（用于隔离模式下团队新建场景）
     */
    private String teamName;

    /**
     * 团队负责人用户id
     */
    private String teamUserId;

    /**
     * 是否从tab页操作 true:代表是  false:代表否
     */
    private Boolean fromDetail;

    /**
     * 浏览器相关信息
     */
    private String httpHeader;

    /**
     * 需要被移交的负责人userId
     */
    private String changeUserId;

    /**
     * 用来记录异常信息的实体，因为异常不仅仅在校验teamStrategy.verify,而且在save层那边也有
     */
    private List<TeamBatchPojo> teamBatchPojos;

    /**
     * 操作标识
     * @see com.xbongbong.saas.enums.UserTeamOperateTagEnum
     */
    private Integer operateTag;

    /**
     * 来自退回公海池操作，true来自公海池，false非公海池操作
     */
    private Boolean fromBackPublic = false;
}
